//
//  HMEmoticonPackageModel.swift
//  68.新工程-表情键盘_界面搭建
//
//  Created by shenzhenIOS on 16/4/20.
//  Copyright © 2016年 shenzhenIOS. All rights reserved.
//

import UIKit

// 表情包模型, 表情包名称, 表情包对应的文件夹名称, 表情模型数组
class HMEmoticonPackageModel: NSObject {
    /// 表情包对应的文件夹名称
    var id: String
    
    /// 表情包名称
    var group_name_cn: String
    
    /// 表情模型数组,所有表情模型都放一起
    var emoticons: [HMEmoticonModel]
    
    /// 所有页的表情,一页有20个表情
    var pageEmoticons: [[HMEmoticonModel]] = [[HMEmoticonModel]]()
    
    init(id: String, group_name_cn: String, emoticons: [HMEmoticonModel]) {
        self.id = id
        self.group_name_cn = group_name_cn
        self.emoticons = emoticons
        super.init()
        
        // 将所有表情拆分成多页, 拆成一页20个模型,会拆出多页
        spliteEmoticons()
    }
    
    override var description: String {
        get {
            return "\n\t 表情包模型: id: \(id), group_name_cn: \(group_name_cn), pageEmoticons: \(pageEmoticons)"
        }
    }
    
    /// 将所有表情拆分成多页, 拆成一页20个模型,会拆出多页
    private func spliteEmoticons() {
        // 计算总页数 = (总数量 + 一页表情数 - 1) / 一页表情数
        let pageCount = (emoticons.count + HMEmoticonNumberOfPage - 1) / HMEmoticonNumberOfPage
        
        // 当默认没有表情的时候,生成一页空表情
        if pageCount == 0 { [[0]]
            let pageEmoticon = [HMEmoticonModel]()
            pageEmoticons.append(pageEmoticon)
        }
        
        // 分割每一页 [[20], [20], [20], [20]]
        for i in 0..<pageCount {
            let location = i * HMEmoticonNumberOfPage
            var length = HMEmoticonNumberOfPage
            
            // 判断最后一页的是否会超出数组长度,如果超出数组的长度,length需要重新计算
            if location + length > emoticons.count {
                length = emoticons.count - location
            }
            
            let range = NSRange(location: location, length: length)
            
            // 数组分割
            let subEmoticons = (emoticons as NSArray).subarrayWithRange(range) as! [HMEmoticonModel]
            pageEmoticons.append(subEmoticons)
        }
    }
}
